Previous Page Go to Menu
オープンソースによる地図表示(Leaflet編)追加分 その2(続き)
2019/5/25 by T. Fujita
追加-2-2、写真付マーカーで撮影地を地図上に表示する
次にマーカーで遊んでみましょう。 マーカーとしてフォトフレーム付き写真を表示させてみます。 これまでと同様に表示されたマーカーをクリックすると当該写真がポップアップで表示されます。
なお、PC上の「Safari」では動作しませんでしたが、Android 7.0 及び iOS 12.2 での動作は確認しています。 以下にその表示例とソースファイルの内容を示します。 ソースファイルの内容では、追加・変更した部分を赤字で表示しました。
『Leaflet_Tutrial_Additional_004.html』の始めに記載したスタイルシートで、フォトフレーム及び写真のサイズと重ね合わせ位置等を規定しています。 ここでは、フォトフレームの足元の位置が地図上の写真撮影地としています。
使用するフォトフレーム及び写真については、『Dialog_Additional_004.js』の変数「photoIcon」、「photoIcon_01」、「photoIcon_02」で指定しており、これまでマーカー表示を指定していた L.icon()の代わりに L.divIcon()を使用してhtmlで表示する画像を記載しています。
単独で表示する場合は、『
Leaflet_Tutrial_Additional_004.html 』をクリックして下さい。
写真付マーカーで撮影地を地図上に表示する例
『 Leaflet_Tutrial_Additional_004.html 』のソースファイル内容
001 <!DOCTYPE html>
002 <html>
003 <head>
004 <title>Leaflet_Tutrial_Additional_004.html 2019/5/25 by T. Fujita</title>
005 <meta charset = "utf-8" />
006 <link rel = "stylesheet" href = "https://unpkg.com/leaflet@1.4.0/dist/leaflet.css" />
007 <link rel = "stylesheet" href = "https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css">
008 <link rel = "stylesheet" href = "./Plugins/ms-Dropdown-master/css/msdropdown/dd.css" />
009 <link rel = "stylesheet" href = "./CSS/scroll_menu.css" />
010 <link rel = "stylesheet" href = "./CSS/Original_Style_404.css" />
011
012 <style>
013 html, body {
014 width: 99%;
015 height: 98%;
016 font-size: 14px;
017 z-index: 0;
018 }
019
020 form img {
021 height: 100px;
022 order: 1;
023 }
024
025 .imageCover1 {
026 position: relative;
027 width: 100px;
028 height: 217px;
029 }
030
031 .imageCover1 .baseImage {
032 position: absolute;
033 left: -50px;
034 top: -217px;
035 width: 100px;
036 height: 56px;
037 }
038
039 .imageCover1 .coverImage {
040 position: absolute;
041 left: -50px;
042 top: -217px;
043 width: 100px;
044 height: 217px;
045 }
046
047 .imageCover2 {
048 position: relative;
049 width: 75px;
050 height: 260px;
051 }
052
053 .imageCover2 .baseImage {
054 position: absolute;
055 left: -38px;
056 top: -260px;
057 width: 75px;
058 height: 87px;
059 }
060
061 .imageCover2 .coverImage {
062 position: absolute;
063 left: -38px;
064 top: -260px;
065 width: 75px;
066 height: 260px;
067 }
068
069 </style>
070
071 <script src = "https://unpkg.com/leaflet@1.4.0/dist/leaflet.js"></script>
072 <script src = "https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
073 <script src = "https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
074 <script src = "https://cdnjs.cloudflare.com/ajax/libs/exif-js/2.2.1/exif.min.js"></script>
075 <script src = "./Plugins/ms-Dropdown-master/js/msdropdown/jquery.dd.js"></script>
076 <script src = "./JS/Dialog_Additional_004.js" ></script>
077 <script>
078 var Marker_LAT = new Array();
079 var Marker_LON = new Array();
080 var Marker_NAM = new Array();
081 var Marker_LNK = new Array();
082 var Marker_ICN = new Array();
083 var Marker_ID = new Array();
084 var Marker_Drag_flag = new Array();
085 var Marker_Drag_info = new Array();
086 var ClickLat = null;
087 var ClickLon = null;
088 var Marker_count = 0;
089 var Marker_ID_count = 0;
090 var SelectedID;
091 var Marker_flag = 0;
092 var Temp_shape, Temp_shape_clone;
093 var Temp, Temp_LAT, Temp_LON, Temp_NAM, Temp_LNK, Temp_ICN, Temp_ID;
094 var Temp_Drag_flag, Temp_Drag_info;
095 var Layer_404 = new Array();
096 var Layer_404_clone = new Array();
097 var Dialog_flag_001 = 0;
098 var Photo_Marker_LAT = new Array();
099 var Photo_Marker_LON = new Array();
100 var Photo_Marker_NAM = new Array();
101 var Photo_Marker_LNK = new Array();
102 var Photo_Marker_ICN = new Array();
103 var Photo_Marker_ID = new Array();
104 var Photo_Marker_Drag_flag = new Array();
105 var Photo_Marker_Drag_info = new Array();
106 var Photo_Marker_count = 0;
107 var Photo_Marker_ID_count = 0;
108 var Layer_AD004 = new Array();
109 var Layer_AD004_clone = new Array();
110 var map_AD004;
111
112 function init() {
113 map_AD004 = L.map('map_AD004').setView([35.0, 137.0], 6);
114 mapLink = '<a href="https://openstreetmap.org">OpenStreetMap</a>';
115 L.tileLayer(
116 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
117 attribution: 'Map data © ' + mapLink,
118 maxZoom: 18
119
120 // 'https://cyberjapandata.gsi.go.jp/xyz/pale/{z}/{x}/{y}.png', {
121 // attribution: "<a href='https://maps.gsi.go.jp/development/ichiran.html' target='_blank'>地理院タイル</a>"
122 }).addTo(map_AD004);
123 map_AD004.on('click', function(e) {
124 ClickLat = e.latlng.lat;
125 ClickLon = e.latlng.lng;
126 if ( Marker_flag == 1 ) { Leaflet_Marker_401(); }
127 if ( Marker_flag == 2 ) { Leaflet_Marker_403(); }
128 });
129 }
130
131 function Leaflet_Marker_400() { // 初期設定(マーカー単独設置)
132 ClickLat = null;
133 ClickLon = null;
134 Marker_flag = 1;
135 }
136
137 function Leaflet_Marker_401() { // マーカー単独設置
138 if(Marker_flag == 1) {
139 Marker_LAT[ Marker_count ] = ClickLat;
140 Marker_LON[ Marker_count ] = ClickLon;
141 Marker_NAM[ Marker_count ] = Set_Text;
142 Marker_LNK[ Marker_count ] = " ";
143 Marker_ICN[ Marker_count ] = L.icon({
144 iconUrl: Icon_Url,
145 iconSize: [Icon_W, Icon_H],
146 iconAnchor : [Icon_AW, Icon_AH],
147 popupAnchor: [Icon_PW, Icon_PH]
148 });
149 Marker_ID[ Marker_count ] = "Marker" + Marker_ID_count;
150 Marker_Drag_flag[ Marker_count ] = true;
151 Marker_Drag_info[ Marker_count ] = "マウスで移動出来ます。";
152 Temp = Marker_count;
153 Marker_setting();
154 Marker_set();
155 Layer_404[ Temp ] = Temp_shape;
156 Layer_404[ Temp ].addTo(map_AD004);
157 Layer_404_clone[ Temp ] = Temp_shape_clone;
158 Layer_404_clone[ Temp ].addTo(map_AD004);
159 Marker_count = Marker_count + 1;
160 Marker_ID_count = Marker_ID_count + 1;
161 Marker_flag = 0;
162 }
163 }
164
165 function Leaflet_Marker_402() { // 初期設定(マーカー連続設置)
166 ClickLat = null;
167 ClickLon = null;
168 Marker_flag = 2;
169 }
170
171 function Leaflet_Marker_403() { // マーカー連続設置
172 if(Marker_flag == 2) {
173 Marker_LAT[ Marker_count ] = ClickLat;
174 Marker_LON[ Marker_count ] = ClickLon;
175 Marker_NAM[ Marker_count ] = Set_Text;
176 Marker_LNK[ Marker_count ] = " ";
177 Marker_ICN[ Marker_count ] = L.icon({
178 iconUrl: Icon_Url,
179 iconSize: [Icon_W, Icon_H],
180 iconAnchor : [Icon_AW, Icon_AH],
181 popupAnchor: [Icon_PW, Icon_PH]
182 });
183 Marker_ID[ Marker_count ] = "Marker" + Marker_ID_count;
184 Marker_Drag_flag[ Marker_count ] = true;
185 Marker_Drag_info[ Marker_count ] = "マウスで移動出来ます。";
186 Temp = Marker_count;
187 Marker_setting();
188 Marker_set();
189 Layer_404[ Temp ] = Temp_shape;
190 Layer_404[ Temp ].addTo(map_AD004);
191 Layer_404_clone[ Temp ] = Temp_shape_clone;
192 Layer_404_clone[ Temp ].addTo(map_AD004);
193 Marker_count = Marker_count + 1;
194 Marker_ID_count = Marker_ID_count + 1;
195 }
196 }
197
198 function Leaflet_Marker_404() { // マーカー連続設置終了
199 Marker_flag = 0;
200 }
201
202 function Leaflet_Marker_405() { // マーカー全消去
203 var j = Layer_404.length - 1;
204 for(i = 0; i <= j; i++) {
205 if(Layer_404[i] != null) {
206 map_AD004.removeLayer(Layer_404[i]);
207 map_AD004.removeLayer(Layer_404_clone[ i ]);
208 }
209 }
210 Marker_count = 0;
211 Marker_LAT = new Array();
212 Marker_LON = new Array();
213 Marker_NAM = new Array();
214 Marker_LNK = new Array();
215 Marker_ICN = new Array();
216 }
217
218 function Leaflet_Marker_406() { // マーカー保存(CSV形式)
219 for (i = 0; i <= (Marker_LON.length - 1); i++) {
220 if( !isNaN(Marker_LON[ i ]) ) {
221 while( (Marker_LON[ i ] * 1.0) < -180) {
222 Marker_LON[ i ] = (Marker_LON[ i ] * 1.0) + 360;
223 }
224 while( (Marker_LON[ i ] * 1.0) > 180) {
225 Marker_LON[ i ] = (Marker_LON[ i ] * 1.0) - 360;
226 }
227 }
228 }
229 if(Marker_LAT[ 0 ] == "LAT(deg.)") {
230 var CSV_content = [];
231 } else {
232 var CSV_content = "LAT(deg.),LONG(deg.),Name(by utf-8),Link,\r\n";
233 }
234 const aTag = document.createElement('a');
235 aTag.download = "CSV_Data.csv";
236 var bom = new Uint8Array([0xEF, 0xBB, 0xBF]);
237 Temp = Marker_LAT.length;
238 for ( i = 0; i < Temp; i++ ) {
239 if( Marker_LAT[ i ] != "" && Marker_LON[ i ] != "" ) {
240 CSV_content = CSV_content + Marker_LAT[ i ] + "," + Marker_LON[ i ] + "," + Marker_NAM[ i ] + "," + Marker_LNK[ i ] + ",\r\n";
241 }
242 }
243 var blob = new Blob([ bom, CSV_content ], { "type": "text/csv"});
244 if(window.navigator.msSaveBlob) {
245 window.navigator.msSaveBlob(blob, aTag.download); // for IE
246 } else if (window.URL && window.URL.createObjectURL) {
247 aTag.href = window.URL.createObjectURL(blob); // for FireFox
248 document.body.appendChild(aTag);
249 aTag.click();
250 document.body.removeChild(aTag);
251 } else if (window.webkitURL && window.webkitURL.createObject) {
252 aTag.href = (window.URL || window.webkitURL).createObjectURL(blob); // for Chrome
253 aTag.click();
254 } else {
255 alert("保存に失敗しました!");
256 }
257 }
258
259 function Leaflet_Marker_407() { // マーカー読込(CSV形式)
260 Dialog_002();
261 }
262
263 function Marker_setting() { // マーカー設定
264 Temp_LAT = Marker_LAT[ Temp ] * 1.0;
265 Temp_LON = Marker_LON[ Temp ] * 1.0;
266 Temp_NAM = Marker_NAM[ Temp ];
267 Temp_LNK = Marker_LNK[ Temp ];
268 Temp_ICN = Marker_ICN[ Temp ];
269 Temp_ID = Marker_ID[ Temp ];
270 Temp_Drag_flag = Marker_Drag_flag[ Temp ]
271 Temp_Drag_info = Marker_Drag_info[ Temp ]
272 Set_Link =" ";
273 if(Temp_LNK != undefined ) {
274 if( String( Temp_LNK ).length > 5 ) {
275 Set_Link = "<a href= '" + Temp_LNK + "' target='_blank'> " + Temp_NAM + "情報にリンク</a>";
276 }
277 }
278 }
279
280 function Marker_set() { // マーカー設置
281 if( !isNaN( Temp_LAT ) && !isNaN( Temp_LON ) ) {
282 if( (Temp_LAT !== undefined) || (Temp_LAT !== "") ) {
283 if( ((Temp_LAT * 1.0) != 0) || ((Temp_LON * 1.0) != 0) ) {
284 Temp_shape = L.marker([ Temp_LAT, Temp_LON ],
285 {icon: Temp_ICN, id: Temp_ID, draggable: Temp_Drag_flag}).bindPopup( Temp_NAM + "<BR>" + Temp_Drag_info + "<BR>" +
286 "<p> <input type='button' value='Change this Marker' class='marker-change-button'/></p>" +
287 Set_Link + "<p> <input type='button' value='Delete this Marker' class='marker-delete-button'/></p>");
288 Temp_shape.on('popupopen', onMarkerOpen ).on('dragend', Dragging);
289 if(Temp_LON >= 0) {
290 Temp_shape_clone = L.marker([ Temp_LAT, (Temp_LON - 360) ],
291 {icon: Temp_ICN, id: Temp_ID, draggable: Temp_Drag_flag}).bindPopup( Temp_NAM + "<BR>" + Temp_Drag_info + "<BR>" +
292 "<p> <input type='button' value='Change this Marker' class='marker-change-button'/></p>" +
293 Set_Link + "<p> <input type='button' value='Delete this Marker' class='marker-delete-button'/></p>");
294 Temp_shape_clone.on('popupopen', onMarkerOpen ).on('dragend', Dragging);
295 } else {
296 Temp_shape_clone = L.marker([ Temp_LAT, (Temp_LON + 360) ],
297 {icon: Temp_ICN, id: Temp_ID, draggable: Temp_Drag_flag}).bindPopup( Temp_NAM + "<BR>" + Temp_Drag_info + "<BR>" +
298 "<p> <input type='button' value='Change this Marker' class='marker-change-button'/></p>" +
299 Set_Link + "<p> <input type='button' value='Delete this Marker' class='marker-delete-button'/></p>");
300 Temp_shape_clone.on('popupopen', onMarkerOpen ).on('dragend', Dragging);
301 }
302 }
303 }
304 }
305 }
306
307 function onMarkerOpen() { // マーカーをクリックした時に表示する削除ボタンと変更ボタン
308 var tempMarker = this;
309 SelectedID = tempMarker.options.id;
310 $(".marker-delete-button:visible").click(function () {
311 if(SelectedID.slice(0,5) =="Photo") {
312 Photo_Marker_DEL(tempMarker);
313 } else {
314 Marker_DEL(tempMarker);
315 }
316 });
317 $(".marker-change-button:visible").click(function () {
318 Dialog_001();
319 });
320 }
321
322 function Change_Marker() { // 変更ボタン押下時の処理
323 for(i = 0; i <= Marker_count; i++) {
324 if(SelectedID == Marker_ID[ i ] ) {
325 if(Set_Text !="") {
326 Marker_NAM[ i ] = Set_Text;
327 }
328 Marker_ICN[ i ] = L.icon({
329 iconUrl: Icon_Url,
330 iconSize: [Icon_W, Icon_H],
331 iconAnchor : [Icon_AW, Icon_AH],
332 popupAnchor: [Icon_PW, Icon_PH]
333 });
334 }
335 }
336 for(i = 0; i <= Photo_Marker_count; i++) {
337 if(SelectedID == Photo_Marker_ID[ i ] ) {
338 if(Set_Text !="") {
339 Photo_Marker_NAM[ i ] = Set_Text;
340 }
341 Photo_Marker_ICN[ i ] = L.icon({
342 iconUrl: Icon_Url,
343 iconSize: [Icon_W, Icon_H],
344 iconAnchor : [Icon_AW, Icon_AH],
345 popupAnchor: [Icon_PW, Icon_PH]
346 });
347 }
348 }
349 Marker_Refresh();
350 Photo_Marker_Refresh();
351 }
352
353 function Marker_DEL(tempMarker) { // 削除ボタン押下時の処理
354 var k = 0;
355 Marker_flag = 0;
356 Marker_LAT[ Marker_count + 1 ] = "";
357 Marker_LON[ Marker_count + 1 ] = "";
358 Marker_NAM[ Marker_count + 1 ] = "";
359 Marker_LNK[ Marker_count + 1 ] = "";
360 Marker_ICN[ Marker_count + 1 ] = "";
361 Marker_ID[ Marker_count + 1 ] = "";
362 SelectedID = tempMarker.options.id;
363 for(i = 0; i <= Marker_count; i++) {
364 if(SelectedID == Marker_ID[ i ] ) {
365 for(k = i; k <= Marker_count; k++) {
366 Marker_LAT[ k ] = Marker_LAT[ k + 1 ];
367 Marker_LON[ k ] = Marker_LON[ k + 1 ];
368 Marker_NAM[ k ] = Marker_NAM[ k + 1 ];
369 Marker_LNK[ k ] = Marker_LNK[ k + 1 ];
370 Marker_ICN[ k ] = Marker_ICN[ k + 1 ];
371 Marker_ID[ k ] = Marker_ID[ k + 1 ];
372 Marker_Drag_flag[ k ] = Marker_Drag_flag[ k + 1 ];
373 Marker_Drag_info[ k ] = Marker_Drag_info[ k + 1 ];
374 }
375 }
376 }
377 SelectedID = null;
378 Marker_count = Marker_count - 1;
379 Marker_Refresh();
380 }
381
382 function Photo_Marker_DEL(tempMarker) { // 削除ボタン押下時の処理(写真用マーカー)
383 var k = 0;
384 Marker_flag = 0;
385 Photo_Marker_LAT[ Photo_Marker_count + 1 ] = "";
386 Photo_Marker_LON[ Photo_Marker_count + 1 ] = "";
387 Photo_Marker_NAM[ Photo_Marker_count + 1 ] = "";
388 Photo_Marker_LNK[ Photo_Marker_count + 1 ] = "";
389 Photo_Marker_ICN[ Photo_Marker_count + 1 ] = "";
390 Photo_Marker_ID[ Photo_Marker_count + 1 ] = "";
391 SelectedID = tempMarker.options.id;
392 for(i = 0; i <= Photo_Marker_count; i++) {
393 if(SelectedID == Photo_Marker_ID[ i ] ) {
394 for(k = i; k <= Photo_Marker_count; k++) {
395 Photo_Marker_LAT[ k ] = Photo_Marker_LAT[ k + 1 ];
396 Photo_Marker_LON[ k ] = Photo_Marker_LON[ k + 1 ];
397 Photo_Marker_NAM[ k ] = Photo_Marker_NAM[ k + 1 ];
398 Photo_Marker_LNK[ k ] = Photo_Marker_LNK[ k + 1 ];
399 Photo_Marker_ICN[ k ] = Photo_Marker_ICN[ k + 1 ];
400 Photo_Marker_ID[ k ] = Photo_Marker_ID[ k + 1 ];
401 Photo_Marker_Drag_flag[ k ] = Photo_Marker_Drag_flag[ k + 1 ];
402 Photo_Marker_Drag_info[ k ] = Photo_Marker_Drag_info[ k + 1 ];
403 }
404 }
405 }
406 SelectedID = null;
407 Photo_Marker_count = Photo_Marker_count - 1;
408 Photo_Marker_Refresh();
409 }
410 function Marker_Refresh() { // マーカー再表示
411 var j = Layer_404.length - 1;
412 for(i = 0; i <= j; i++) {
413 if(Layer_404[ i ] != null) {
414 map_AD004.removeLayer(Layer_404[ i ]);
415 map_AD004.removeLayer(Layer_404_clone[ i ]);
416 }
417 }
418 for (i = 0; i <= Marker_count - 1; i++)
419 {
420 Temp = i;
421 Marker_setting();
422 Marker_set();
423 Layer_404[ Temp ] = Temp_shape;
424 Layer_404[ Temp ].addTo(map_AD004);
425 Layer_404_clone[ Temp ] = Temp_shape_clone;
426 Layer_404_clone[ Temp ].addTo(map_AD004);
427 }
428 }
429
430 function Photo_Marker_Refresh() { // 写真用マーカー再表示
431 var j = Layer_AD004.length - 1;
432 for(i = 0; i <= j; i++) {
433 if(Layer_AD004[ i ] != null) {
434 map_AD004.removeLayer(Layer_AD004[ i ]);
435 map_AD004.removeLayer(Layer_AD004_clone[ i ]);
436 }
437 }
438 for (i = 0; i <= Photo_Marker_count - 1; i++)
439 {
440 Temp = i;
441 Photo_Marker_Setting();
442 Photo_Marker_Set();
443 Layer_AD004[ Temp ] = Temp_shape;
444 Layer_AD004[ Temp ].addTo(map_AD004);
445 Layer_AD004_clone[ Temp ] = Temp_shape_clone;
446 Layer_AD004_clone[ Temp ].addTo(map_AD004);
447 }
448 }
449
450 function Dragging() { // マーカーをドラッグ時の位置取得
451 ClickLat = this._latlng.lat;
452 ClickLon = this._latlng.lng;
453 SelectedID = this.options.id;
454 if(SelectedID.slice(0,5) == "Photo") {
455 for(i = 0; i <= Photo_Marker_count; i++) {
456 if(SelectedID == Photo_Marker_ID[ i ] ) {
457 Photo_Marker_LAT[ i ] = ClickLat;
458 Photo_Marker_LON[ i ] = ClickLon;
459 }
460 }
461 Photo_Marker_Refresh();
462 } else {
463 for(i = 0; i <= Marker_count; i++) {
464 if(SelectedID == Marker_ID[ i ] ) {
465 Marker_LAT[ i ] = ClickLat;
466 Marker_LON[ i ] = ClickLon;
467 }
468 }
469 Marker_Refresh();
470 }
471 SelectedID = null;
472 }
473
474 function CSV_Markers() { // CSVデータを表示
475 for (i = 0; i <= (Data_CSV.length - 1); i++) {
476 if((Data_CSV[i][0] * 1.0) > 90) {
477 Data_CSV[i][0] = 90;
478 }
479 if((Data_CSV[i][0] * 1.0) < -90) {
480 Data_CSV[i][0] = -90;
481 }
482 while( (Data_CSV[i][1] * 1.0) < -180) {
483 Data_CSV[i][1] = Data_CSV[i][1] * 1.0 + 360;
484 }
485 while( (Data_CSV[i][1] * 1.0) > 180) {
486 Data_CSV[i][1] = Data_CSV[i][1] * 1.0 - 360;
487 }
488 }
489 for (i = 0; i <= (Data_CSV.length - 1); i++) {
490 Marker_LAT[ Marker_count ] = Data_CSV[i][0];
491 Marker_LON[ Marker_count ] = Data_CSV[i][1];
492 Marker_NAM[ Marker_count ] = Data_CSV[i][2];
493 Marker_LNK[ Marker_count ] = Data_CSV[i][3];
494 Marker_ICN[ Marker_count ] = L.icon({
495 iconUrl: Icon_Url,
496 iconSize: [Icon_W, Icon_H],
497 iconAnchor : [Icon_AW, Icon_AH],
498 popupAnchor: [Icon_PW, Icon_PH]
499 });
500 Marker_ID[ Marker_count ] = "Marker" + Marker_ID_count;
501 Marker_Drag_flag[ Marker_count ] = false;
502 Marker_Drag_info[ Marker_count ] = "移動出来ません。";
503 if( Data_CSV[i][0] != "" ) {
504 if( !isNaN( Data_CSV[i][0] ) ) {
505 Temp = Marker_count;
506 Marker_setting();
507 Marker_set();
508 Layer_404[ Temp ] = Temp_shape;
509 Layer_404[ Temp ].addTo(map_AD004);
510 Layer_404_clone[ Temp ] = Temp_shape_clone;
511 Layer_404_clone[ Temp ].addTo(map_AD004);
512 Marker_count = Marker_count + 1;
513 Marker_ID_count = Marker_ID_count + 1;
514 }
515 }
516 }
517 }
518
519 function Leaflet_Photo_001() { // 写真ファイル読込
520 Dialog_Additional_003();
521 }
522
523 function Leaflet_Photo_002() { // 写真用マーカー全消去
524 var j = Layer_AD004.length - 1;
525 for(i = 0; i <= j; i++) {
526 if(Layer_AD004[i] != null) {
527 map_AD004.removeLayer(Layer_AD004[i]);
258 map_AD004.removeLayer(Layer_AD004_clone[ i ]);
529 }
530 }
531 Photo_Marker_count = 0;
532 Photo_Marker_LAT = new Array();
533 Photo_Marker_LON = new Array();
534 Photo_Marker_NAM = new Array();
535 Photo_Marker_LNK = new Array();
536 Photo_Marker_ICN = new Array();
537 }
538
539 function Photo_Marker_Setting() { // 写真用マーカー設定
540 Temp_LAT = Photo_Marker_LAT[ Temp ] * 1.0;
541 Temp_LON = Photo_Marker_LON[ Temp ] * 1.0;
542 Temp_NAM = Photo_Marker_NAM[ Temp ];
543 Temp_LNK = Photo_Marker_LNK[ Temp ];
544 Temp_ICN = Photo_Marker_ICN[ Temp ];
545 Temp_ID = Photo_Marker_ID[ Temp ];
546 Temp_Drag_flag = Photo_Marker_Drag_flag[ Temp ]
547 Temp_Drag_info = Photo_Marker_Drag_info[ Temp ]
548 Set_Link =" ";
549 }
550
551 function Photo_Marker_Set() { // 写真用マーカー設置
552 if( !isNaN( Temp_LAT ) && !isNaN( Temp_LON ) ) {
553 if( (Temp_LAT !== undefined) || (Temp_LAT !== "") ) {
554 if( ((Temp_LAT * 1.0) != 0) || ((Temp_LON * 1.0) != 0) ) {
555 Temp_shape = L.marker([ Temp_LAT, Temp_LON ],
556 {icon: Temp_ICN, id: Temp_ID, draggable: Temp_Drag_flag}).bindPopup( Temp_NAM + "<BR>" + Temp_Drag_info + "<BR>" +
557 "<p><center> <img src = '" + window.URL.createObjectURL(Temp_LNK) + "' width='300'></center></p>" +
558 " <input type='button' value='Delete this Marker' class='marker-delete-button'/></p>");
559 Temp_shape.on('popupopen', onMarkerOpen ).on('dragend', Dragging);
560 if(Temp_LON >= 0) {
561 Temp_shape_clone = L.marker([ Temp_LAT, (Temp_LON - 360) ],
562 {icon: Temp_ICN, id: Temp_ID, draggable: Temp_Drag_flag}).bindPopup( Temp_NAM + "<BR>" + Temp_Drag_info + "<BR>" +
563 "<p><center> <img src = '" + window.URL.createObjectURL(Temp_LNK) + "' width='300'></center></p>" +
564 " <input type='button' value='Delete this Marker' class='marker-delete-button'/></p>");
565 Temp_shape_clone.on('popupopen', onMarkerOpen ).on('dragend', Dragging);
566 } else {
567 Temp_shape_clone = L.marker([ Temp_LAT, (Temp_LON + 360) ],
568 {icon: Temp_ICN, id: Temp_ID, draggable: Temp_Drag_flag}).bindPopup( Temp_NAM + "<BR>" + Temp_Drag_info + "<BR>" +
569 "<p><center> <img src = '" + window.URL.createObjectURL(Temp_LNK) + "' width='300'></center></p>" +
570 " <input type='button' value='Delete this Marker' class='marker-delete-button'/></p>");
571 Temp_shape_clone.on('popupopen', onMarkerOpen ).on('dragend', Dragging);
572 }
573 }
574 var image = document.createElement('img');
575 image.src = window.URL.createObjectURL(Temp_LNK);
576 }
577 }
578 }
579
580 </script>
581 </head>
582 <body onload="init()">
583 <nav id="menu-wrap" style="z-index: 1000;">
584 <ul id="menu" style="width: 98%;">
585 <li><a href="#">マーカー設定</a>
586 <ul>
587 <li><a href="#" onclick = "Dialog_001()">マーカーのスタイル設定</a></li>
588 <li><a href="#" onclick = "Leaflet_Marker_400()">マーカー単独設置 </a></li>
589 <li><a href="#" onclick = "Leaflet_Marker_402()">マーカー連続設置 </a></li>
590 <li><a href="#" onclick = "Leaflet_Marker_404()">マーカー連続設置終了 </a></li>
591 <li><a href="#" onclick = "Leaflet_Marker_405()">マーカー全消去 </a></li>
592 <li><a href="#" onclick = "Leaflet_Marker_406()">マーカー保存(CSV形式) </a></li>
593 <li><a href="#" onclick = "Leaflet_Marker_407()">マーカー読込(CSV形式) </a></li>
594 </ul>
595 </li>
596 <li><a href="#">写真の撮影地表示</a>
597 <ul>
598 <li><a href="#" onclick = "Leaflet_Photo_001()">写真ファイル読込 </a></li>
599 <li><a href="#" onclick = "Leaflet_Photo_002()">写真用マーカー全消去 </a></li>
600 </ul>
601 </li>
602 </ul>
603 </nav>
604 <div id="map_Layer">
605 <div id="map_AD004" style="width: 100%; height: 95%; border: solid 1px"></div>
606 ここで使用しているアイコン素材は、<A HREF = "http://flat-icon-design.com/" target="_blank"> FLAT ICON DESIGN </A>および
607 <A HREF = "http://icooon-mono.com/" target="_blank"> ICOON MONO </A>から取得しており、これらアイコン素材データの著作権は TopeconHeroes が保持しています。
608 </div>
609 </body>
610 </html>
『 Dialog_Additional_004.js 』は、『Dialog_Additional_003.js』を元に写真付マーカーを表示する機能に変更した JavaScriptファイルです。
追加・変更した箇所は赤字で表示しており、写真が横長か縦長かで使用するフォトフレームを変更するようにしました。
『 Dialog_Additional_004.js 』のソースファイル内容
001 // Dialog_Additional_004.js 2019/5/25 by T. Fujita
002
003 var Set_Text = "";
004 var Set_Link = " ";
005 var Icon_Url = "../ICONS/BW_Icon/BW_Icons_64/icon_000200_64.png";
006 var Icon_W = 24;
007 var Icon_H = 24;
008 var Icon_AW = Math.round(Icon_W / 2);
009 var Icon_AH = Math.round(Icon_H / 2);
010 var Icon_PW = 0;
011 var Icon_PH = Math.round(Icon_H / 2) * -1;
012 var Max_M_Size = 64;
013 var Min_M_Size = 8;
014 var Data_CSV = new Array();
015 var Photo_file = new Array();
016 var file;
017 var photoIcon;
018
019 $(document).ready( function() {
020 $("body").append('<div id="dialog_001" style="z-index: 2000;"><p><form name="Form_001"> Title: '+
021 '<input type="text" style="width: 230px;" name="txt_mk" value=""></form><BR>'+
022 '<div>Marker Select:<BR>'+
023 '<select id="Marker_Samples" name="Marker_Samples" style="width:150px;">'+
024 '<option value="1" title="../ICONS/BW_Icon/BW_Icons_64/icon_000200_64.png">001</option>'+
025 '<option value="2" title="../ICONS/BW_Icon/BW_Icons_64/icon_127890_64.png">002</option>'+
026 '<option value="3" title="../ICONS/BW_Icon/BW_Icons_64/icon_114880_64.png">003</option>'+
027 '<option value="4" title="../ICONS/BW_Icon/BW_Icons_64/icon_109890_64.png">004</option>'+
028 '<option value="5" title="../ICONS/BW_Icon/BW_Icons_64/icon_001050_64.png">005</option>'+
029 '<option value="6" title="../ICONS/BW_Icon/BW_Icons_64/icon_119170_64.png">006</option>'+
030 '<option value="7" title="../ICONS/BW_Icon/BW_Icons_64/icon_122590_64.png">007</option>'+
031 '<option value="8" title="../ICONS/BW_Icon/BW_Icons_64/icon_000220_64.png">008</option>'+
032 '<option value="9" title="../ICONS/BW_Icon/BW_Icons_64/icon_133000_64.png">009</option>'+
033 '<option value="10" title="../ICONS/BW_Icon/BW_Icons_64/icon_115740_64.png">010</option>'+
034 '<option value="11" title="../ICONS/BW_Icon/BW_Icons_64/icon_115710_64.png">011</option>'+
035 '<option value="12" title="../ICONS/BW_Icon/BW_Icons_64/icon_115750_64.png">012</option>'+
036 '<option value="13" title="../ICONS/BW_Icon/BW_Icons_64/icon_115720_64.png">013</option>'+
037 '<option value="14" title="../ICONS/BW_Icon/BW_Icons_64/icon_147060_64.png">014</option>'+
038 '<option value="15" title="../ICONS/BW_Icon/BW_Icons_64/icon_127900_64.png">015</option>'+
039 '<option value="16" title="../ICONS/BW_Icon/BW_Icons_64/icon_109850_64.png">016</option>'+
040 '<option value="17" title="../ICONS/BW_Icon/BW_Icons_64/icon_111050_64.png">017</option>'+
041 '<option value="18" title="../ICONS/BW_Icon/BW_Icons_64/icon_111060_64.png">018</option>'+
042 '<option value="19" title="../ICONS/BW_Icon/BW_Icons_64/icon_111520_64.png">019</option>'+
043 '<option value="20" title="../ICONS/BW_Icon/BW_Icons_64/icon_127100_64.png">020</option>'+
044 '<option value="21" title="../ICONS/BW_Icon/BW_Icons_64/icon_127110_64.png">021</option>'+
045 '<option value="22" title="../ICONS/BW_Icon/BW_Icons_64/icon_127120_64.png">022</option>'+
046 '<option value="23" title="../ICONS/BW_Icon/BW_Icons_64/icon_127130_64.png">023</option>'+
047 '<option value="24" title="../ICONS/BW_Icon/BW_Icons_64/icon_127140_64.png">024</option>'+
048 '<option value="25" title="../ICONS/BW_Icon/BW_Icons_64/icon_127150_64.png">025</option>'+
049 '<option value="26" title="../ICONS/BW_Icon/BW_Icons_64/icon_127160_64.png">026</option>'+
050 '<option value="27" title="../ICONS/BW_Icon/BW_Icons_64/icon_001720_64.png">027</option>'+
051 '<option value="28" title="../ICONS/BW_Icon/BW_Icons_64/icon_100590_64.png">028</option>'+
052 '<option value="29" title="../ICONS/BW_Icon/BW_Icons_64/icon_100600_64.png">029</option>'+
053 '<option value="30" title="../ICONS/BW_Icon/BW_Icons_64/icon_102040_64.png">030</option>'+
054 '<option value="31" title="../ICONS/BW_Icon/BW_Icons_64/icon_104940_64.png">031</option>'+
055 '<option value="32" title="../ICONS/BW_Icon/BW_Icons_64/icon_107470_64.png">032</option>'+
056 '<option value="33" title="../ICONS/BW_Icon/BW_Icons_64/icon_108510_64.png">033</option>'+
057 '<option value="34" title="../ICONS/BW_Icon/BW_Icons_64/icon_108730_64.png">034</option>'+
058 '<option value="35" title="../ICONS/BW_Icon/BW_Icons_64/icon_111960_64.png">035</option>'+
059 '<option value="36" title="../ICONS/BW_Icon/BW_Icons_64/icon_111970_64.png">036</option>'+
060 '<option value="37" title="../ICONS/BW_Icon/BW_Icons_64/icon_112440_64.png">037</option>'+
061 '<option value="38" title="../ICONS/BW_Icon/BW_Icons_64/icon_112450_64.png">038</option>'+
062 '<option value="39" title="../ICONS/BW_Icon/BW_Icons_64/icon_113000_64.png">039</option>'+
063 '<option value="40" title="../ICONS/BW_Icon/BW_Icons_64/icon_113010_64.png">040</option>'+
064 '<option value="41" title="../ICONS/BW_Icon/BW_Icons_64/icon_114520_64.png">041</option>'+
065 '<option value="42" title="../ICONS/BW_Icon/BW_Icons_64/icon_114530_64.png">042</option>'+
066 '<option value="43" title="../ICONS/BW_Icon/BW_Icons_64/icon_114770_64.png">043</option>'+
067 '<option value="44" title="../ICONS/BW_Icon/BW_Icons_64/icon_114780_64.png">044</option>'+
068 '<option value="45" title="../ICONS/BW_Icon/BW_Icons_64/icon_128020_64.png">045</option>'+
069 '<option value="46" title="../ICONS/BW_Icon/BW_Icons_64/icon_124660_64.png">046</option>'+
070 '<option value="47" title="../ICONS/BW_Icon/BW_Icons_64/icon_127930_64.png">047</option>'+
071 '<option value="48" title="../ICONS/Flat_Icons/s64_f_business_72_0nbg.png">048</option>'+
072 '<option value="49" title="../ICONS/Flat_Icons/s64_f_business_76_0nbg.png">049</option>'+
073 '<option value="50" title="../ICONS/Flat_Icons/s64_f_object_6_2nbg.png">050</option>'+
074 '<option value="51" title="../ICONS/Flat_Icons/s64_f_object_7_2nbg.png">051</option>'+
075 '<option value="52" title="../ICONS/Flat_Icons/s64_f_object_24_1nbg.png">052</option>'+
076 '<option value="53" title="../ICONS/Flat_Icons/s64_f_object_25_0nbg.png">053</option>'+
077 '<option value="54" title="../ICONS/Flat_Icons/s64_f_object_27_2nbg.png">054</option>'+
078 '<option value="55" title="../ICONS/Flat_Icons/s64_f_object_155_1nbg.png">055</option>'+
079 '<option value="56" title="../ICONS/Flat_Icons/s64_f_object_164_2nbg.png">056</option>'+
080 '<option value="57" title="../ICONS/Flat_Icons/s64_f_object_167_0nbg.png">057</option>'+
081 '<option value="58" title="../ICONS/Flat_Icons/s64_f_object_173_0nbg.png">058</option>'+
082 '<option value="59" title="../ICONS/Flat_Icons/s64_f_object_115_0nbg.png">059</option>'+
083 '<option value="60" title="../ICONS/Flat_Icons/s64_f_object_116_1nbg.png">060</option>'+
084 '</select></div><BR>'+
085 '<div><tr><td><BR><div id="num_001"></div><div id="slider_001"></div>'+
086 '<BR><BR><div id="Selected_Icon">Selected Icon: <img src=""></div>'+
087 '</td></tr></div><BR>(注) ここで使用しているアイコン素材は、<A HREF = "http://flat-icon-design.com/" target="_blank"> FLAT ICON DESIGN </A>および' +
088 '<A HREF = "http://icooon-mono.com/" target="_blank"> ICOON MONO </A>から取得しており、<BR>' +
089 'これらアイコン素材データの著作権は TopeconHeroes が保持しています。</p><div>');
090
091 $('#Selected_Icon img').attr('src', Icon_Url);
092
093 $('#dialog_001').dialog({
094 autoOpen: false,
095 title: 'Please Set the Icon Style.',
096 height: 450,
097 width: 300,
098 closeOnEscape: true,
099 modal: true,
100 buttons: {
101 "設定": function(){
102 Set_Text = document.Form_001.txt_mk.value;
103 var Temp = Marker_Samples.options[Marker_Samples.selectedIndex].title;
104 Icon_Url = Temp;
105 Icon_AW = Math.round(Icon_W / 2);
106 Icon_AH = Math.round(Icon_H / 2);
107 Icon_PW = 0;
108 Icon_PH = Math.round(Icon_H / 2) * -1;
109 Change_Marker();
110 $(this).dialog('close');
111 }
112 }
113 });
114
115 $("body").append('<div id="dialog_002" style="z-index: 2000;"><p><form name="Form_002">'+
116 'Title: <input type="text" style="width: 230px;" name="txt_dat" value=""></form></p><HR>'+
117 '<p> File Select:'+
118 '<form name="subinput">'+
119 '<center>CSVファイルを指定してください。<BR><BR>'+
120 ' <TD><input type="file" name="select" id="select_002" value="" onchange="CSV_Data()"></TD>'+
121 ' <BR><BR>'+
122 '</center></form></p></div>');
123
124 $('#dialog_002').dialog({
125 autoOpen: false,
126 title: 'CSVファイル選択',
127 height: 400,
128 width: 300,
129 closeOnEscape: true,
130 modal: true,
131 show: "fade",
132 hide: "fade",
133 buttons: {
134 "Select the Marker": function(){
135 Dialog_001();
136 },
137 "Set Markers": function(){
138 CSV_Markers();
139 },
140 "Close": function(){
141 $(this).dialog('close');
142 }
143 }
144 });
145
146 $("body").append('<div id="dialog_AD_003" style="z-index: 2000;"><p><form name="Form_AD_003">'+
147 'Title: <input type="text" style="width: 230px;" name="txt_file" value=""></form></p><HR>'+
148 '<p> File Select: 写真ファイルを指定してください。'+
149 '<form name="photoinput">'+
150 '<center><TD><input type="file" accept="image/*" name="select_AD" id="select_AD_003" value="" onchange="updateImageDisplay()"></TD>'+
151 ' <BR>'+
152 '<div class="preview"><p>ファイルが選択されていません</p></div></center></form></p></div>');
153
154 $('#dialog_AD_003').dialog({
155 autoOpen: false,
156 title: '写真ファイル選択',
157 height: 400,
158 width: 300,
159 closeOnEscape: true,
160 modal: true,
161 show: "fade",
162 hide: "fade",
163 buttons: {
164 "Set Photo Marker": function(){
165 Photo_Data();
166 },
167 "Close": function(){
168 $(this).dialog('close');
169 }
170 }
171 });
172
173
174 $('#slider_001').slider( {
175 orientation: 'horizontal',
176 range: 'min',
177 max: 255,
178 value: 127,
179 slide: refreshSwatch,
180 change: refreshSwatch
181 } );
182 $( '#slider_001' ).slider( 'value', 96 );
183 $( '#Marker_Samples' ).msDropDown({
184 visibleRows:4,
185 on:{change:function(data, ui) {
186 Icon_Url = Marker_Samples.options[Marker_Samples.selectedIndex].title;
187 $('#Selected_Icon img').attr('src', Icon_Url);
188 }}
189 });
190 });
191
192
193 function Dialog_001() {
194 document.Form_001.txt_mk.value = "";
195 $('#dialog_001').dialog('open');
196 }
197
198 function Dialog_002() {
199 document.Form_002.txt_dat.value = "";
200 document.subinput.select.value = "";
201 $('#dialog_002').dialog('open');
202 }
203
204 function Dialog_Additional_003() {
205 var preview = document.querySelector('.preview');
206 document.Form_AD_003.txt_file.value = "";
207 document.photoinput.select_AD.value = "";
208 while(preview.firstChild){
209 preview.removeChild(preview.firstChild);
210 }
211 $('#dialog_AD_003').dialog('open');
212 }
213
214
215 function refreshSwatch() {
216 Icon_W = Math.round($('#slider_001').slider('value') / 255 * Max_M_Size);
217 if (Icon_W <= Min_M_Size) { Icon_W = Min_M_Size; }
218 Icon_H = Icon_W;
219 $( '#num_001' ).html( 'Marker Size: ' + Icon_W );
220 $( '#Selected_Icon img' ).css( { width: Icon_W, height: Icon_H } );
221 }
222
223 function CSV_Data() {
224 var file_input = $('#select_002');
225 var fileData = file_input[0].files[0];
226
227 Data_CSV = [];
228 var reader = new FileReader();
229 reader.onerror = function() {
230 alert('ファイル読み込みに失敗しました。');
231 }
232 reader.onload = function() {
233 var lineArr = reader.result.split("\r\n");
234 for (var i = 0; i < lineArr.length; i++) {
235 Data_CSV[i] = lineArr[i].split(",");
236 }
237 }
238 reader.readAsText(fileData);
239 }
240
241 function Photo_Data() {
242 var Temp_Lat;
243 var Temp_Lon;
244 var Temp_Date;
245 var Temp_Name;
246 var Temp_Pos;
247 var NSEW;
248 var image = document.createElement('img');
249 image.src = window.URL.createObjectURL(file);
250 var photoIcon_01 = L.divIcon({className: 'imageCover1', html: "<img src='" + image.src + "' alt='写真' class='baseImage'> <img src='../ICONS/Photo_Frame_214.png' alt='アイコン' class='coverImage'>"});
251 var photoIcon_02 = L.divIcon({className: 'imageCover2', html: "<img src='" + image.src + "' alt='写真' class='baseImage'> <img src='../ICONS/Photo_Frame_215.png' alt='アイコン' class='coverImage'>"});
252
253 EXIF.getData(file, function() { // EXIF.getDataでexif情報を解析
254 Temp_Pos = EXIF.getTag(this, "GPSLatitude"); // EXIF.getTag(this, "[exifのタグ名]")で、値を取得
255 if(image.naturalWidth >= image.naturalHeight) {
256 photoIcon = photoIcon_01;
257 } else {
258 photoIcon = photoIcon_02;
259 }
260 if( Temp_Pos === undefined ) {
261 alert("写真の位置情報はありません!\n" + "マーカーは任意の位置に移動できます。");
262 Photo_Data_Set();
263 } else {
264 Temp_Pos = EXIF.getTag(this, "GPSLatitude");
265 NSEW = EXIF.getTag(this, "GPSLatitudeRef");
266 if(NSEW == "N") {
267 Temp_Lat = Temp_Pos[0] + Temp_Pos[1]/60 + Temp_Pos[2]/60/60;
268 } else {
269 Temp_Lat = (Temp_Pos[0] + Temp_Pos[1]/60 + Temp_Pos[2]/60/60) * -1.0;
270 }
271 Temp_Pos = EXIF.getTag(this, "GPSLongitude");
272 NSEW = EXIF.getTag(this, "GPSLongitudeRef");
273 if(NSEW == "E") {
274 Temp_Lon = Temp_Pos[0] + Temp_Pos[1]/60 + Temp_Pos[2]/60/60;
275 } else {
276 Temp_Lon = (Temp_Pos[0] + Temp_Pos[1]/60 + Temp_Pos[2]/60/60) * -1.0;
277 }
278 Temp_Date = EXIF.getTag(this, "DateTimeOriginal");
279 Temp_Name = file.name;
280 Photo_Marker_LAT[ Photo_Marker_count ] = Temp_Lat;
281 Photo_Marker_LON[ Photo_Marker_count ] = Temp_Lon;
282 Photo_Marker_NAM[ Photo_Marker_count ] = Temp_Date + "の写真";
283 Photo_Marker_LNK[ Photo_Marker_count ] = file;
284 Photo_Marker_ICN[ Photo_Marker_count ] = photoIcon;
285 Photo_Marker_ID[ Photo_Marker_count ] = "Photo" + Photo_Marker_ID_count;
286 Photo_Marker_Drag_flag[ Photo_Marker_count ] = false;
287 Photo_Marker_Drag_info[ Photo_Marker_count ] = "マウスで移動出来ません。";
288 Temp = Photo_Marker_count;
289 Photo_Marker_Setting();
290 Photo_Marker_Set();
291 Layer_AD004[ Temp ] = Temp_shape;
292 Layer_AD004[ Temp ].addTo(map_AD004);
293 Layer_AD004_clone[ Temp ] = Temp_shape_clone;
294 Layer_AD004_clone[ Temp ].addTo(map_AD004);
295 Photo_Marker_count = Photo_Marker_count + 1;
296 Photo_Marker_ID_count = Photo_Marker_ID_count + 1;
297 }
298 });
299 }
300
301 function Photo_Data_Set() {
302 var Temp_Lat = map_AD004.getCenter().lat;
303 var Temp_Lon = map_AD004.getCenter().lng;
304 var Temp_Name;
305 var image = document.createElement('img');
306 image.src = window.URL.createObjectURL(file);
307 Temp_Name = file.name;
308 Photo_Marker_LAT[ Photo_Marker_count ] = Temp_Lat;
309 Photo_Marker_LON[ Photo_Marker_count ] = Temp_Lon;
310 Photo_Marker_NAM[ Photo_Marker_count ] = Temp_Name + "の写真";
311 Photo_Marker_LNK[ Photo_Marker_count ] = file;
312 Photo_Marker_ICN[ Photo_Marker_count ] = photoIcon;
313 Photo_Marker_ID[ Photo_Marker_count ] = "Photo" + Photo_Marker_ID_count;
314 Photo_Marker_Drag_flag[ Photo_Marker_count ] = true;
315 Photo_Marker_Drag_info[ Photo_Marker_count ] = "マウスで移動出来ます。";
316 Temp = Photo_Marker_count;
317 Photo_Marker_Setting();
318 Photo_Marker_Set();
319 Layer_AD004[ Temp ] = Temp_shape;
320 Layer_AD004[ Temp ].addTo(map_AD004);
321 Layer_AD004_clone[ Temp ] = Temp_shape_clone;
322 Layer_AD004_clone[ Temp ].addTo(map_AD004);
323 Photo_Marker_count = Photo_Marker_count + 1;
324 Photo_Marker_ID_count = Photo_Marker_ID_count + 1;
325 }
326
327 function updateImageDisplay() {
328 var preview = document.querySelector('.preview');
329 var file_input = $('#select_AD_003');
330 file = file_input[0].files[0];
331 var para = document.createElement('p');
332 if(file === undefined) {
333 para.textContent = 'ファイルが選択されていません!';
334 preview.removeChild(preview.childNodes.item(0));
335 preview.appendChild(para);
336 } else {
337 para.textContent = 'ファイル名: ' + file.name;
338 while(preview.firstChild){
339 preview.removeChild(preview.firstChild);
340 }
341 preview.appendChild(para);
342 var image = document.createElement('img');
343 image.src = window.URL.createObjectURL(file);
344 preview.appendChild(image);
345 }
346 }
Previous Page Go to Menu